大學修人工智慧這堂課時,期末專題實作一個手寫數字辨識系統開啟了我對機器學習學習之路,在此之前只修過一些理工科基礎課。
興趣研究約兩年。藉這個機會回顧自己是怎麼入門,及可以怎麼繼續研究下去~
有簡單的 python 程式基礎,但對機器學習領域非常陌生的人
這邊程式範例都會用 google colab 示範,懂使用相關環境更好,不懂也沒關係~
ps.若無程式基礎可快速瀏覽 Introducing Python 這本書的第二~四章即可[註1]
機器學習範圍大,所以這30天基本上是以怎麼完成手寫數字辨識系統學習,藉由完成系統專案的過程中來認識各種機器學習的方法,對機器學習這個領域有概念,並瞭解可以往哪個方向繼續研究,或有什麼資源可以幫助學習。而這 30 天的內容將包括以下四點:
先了解我們要做什麼,有沒有別人做過的程式。
[DAY2] 什麼是手寫數字辨識系統?需求與處理流程介紹
[DAY3] 有沒有別人做過的手寫數字辨識程式?方法的分類整理
[DAY4] 使用 OCR 來快速實做出手寫數字辨識系統
介紹機器學習是什麼後,這邊主要介紹機器學習中的神經網路方法,會用到 Keras 這個深度學習套件來實作手寫數字辨識系統。這一段也會介紹其它可以應用在手寫數字辨識系統的機器學習方法等。
/神經網路介紹/
[DAY5] 什麼是神經網路(Neural Network)?機器學習與深度學習的概念介紹
[DAY6] 機器學習學什麼?釐清手寫數字辨識系統的學習情境與類型
[DAY7] 怎麼找適合的神經網路方法?以機器學習找方法三步驟解釋
/神經網路細節/
[DAY8] 讓 NN model 引入非線性-激勵函數(activation function)
[DAY9] 評估 NN model 好壞的指標-損失函數(loss function)
[DAY10] NN model 學習的核心-優化器(optimizer)
[DAY11] NN model 的訓練設定-訓練週期(epoch) 與 批次(batch)
[DAY12] 評估結果成效的準則-性能指標(metrics)
[DAY13] 資料的劃分-訓練集(training set)、驗證集(validation set) 與 測試集(testing set)
/神經網路實作/
[DAY14] 使用 Keras 拼出手寫數字辨識系統的前置作業-實作環境 與 深度學習框架介紹
[DAY15] 使用 Keras 拼出手寫數字辨識系統的前置作業2-MNIST 資料集
[DAY16] 使用 Keras 實作手寫數字辨識系統-含程式碼
/神經網路調整/
[DAY17] 實作結果與調整方向-概念介紹(error/bias/variance)
[DAY18] 實際結果與調整方向2-步驟與舉例(tips)
/神經網路進階介紹/
[DAY19] 神經網路模型有哪些?種類與使用介紹(MLP/CNN)
[DAY20] 神經網路模型有哪些?種類與使用介紹2(SVM/GAN/Auto Encoder)
[DAY21] 神經網路模型有哪些?種類與使用介紹3 與 NN 總結
/除了神經網路外的其他機器學習方法(邏輯迴歸/SVM/KNN/貝式分類/決策數/隨機森林)/
[DAY22] 可以用在手寫數字辨識系統上的機器學習方法整理
[DAY23] 可以用在手寫數字辨識系統上的機器學習方法介紹
介紹 Kaggle 平台、google colab 環境。
ps. Microsoft 的機器學習相關服務在 DAY28 有稍微提到
[DAY24] 累積機器學習實作經驗的好地方-Kaggle 平台介紹
[DAY25] Kaggle 的參賽版面介紹-以手寫數字辨識比賽為例
[DAY26] Kaggle 手寫數字辨識比賽的實作結果討論-附程式碼
[DAY27] 線上程式編輯環境-Google Colab 介紹
可以往哪些路繼續學習
[DAY28] 為什麼要學機器學習?從數據分析成熟度模型來談ML跟數據的關聯
[DAY29] 會手寫數字辨識系統後,可以往哪些方向繼續學習呢?
[DAY30] 用手寫數字辨識系統學習機器學習 30 天的尾聲
那讓我們開始吧!
[註1] I code so I am 的 Day 02:撰寫第一支 Neural Network 程式 -- 阿拉伯數字辨識